package com.yl.solution.dao;

import java.io.Serializable;
import java.util.List;

/**
 * 基础数据库操作类
 * @author Miles
 *
 */
public interface BaseDAO<T> {
	
	/**
	 * 保存一个对象
	 * @param obj
	 * @return
	 */
	public Serializable save(T obj);
	
	/**
	 * 删除一个对象
	 * @param obj
	 */
	public void delete(T obj);
	
	/**
	 * 更新一个对象
	 * @param obj
	 */
	public void update(T obj);
	
	/**
	 * 获得一个对象
	 * 
	 * @param c
	 *            对象类型
	 * @param id
	 * @return Object
	 */
	public T get(Class<T> c, Serializable id);
	
	/**
	 * 查询
	 * @param hql
	 * @return
	 */
	public List<T> find(String sql);
	
	/**
	 * 查询集合
	 * @param hql
	 * @param param
	 * @return
	 */
	public List<T> find(String sql,Object[] param);
	
	/**
	 * 查询集合
	 * @param hql
	 * @param param
	 * @return
	 */
	public List<T> find(String sql,List<Object> param);
	
	/**
	 * 查询集合(带分页)
	 * 
	 * @param hql
	 * @param param
	 * @param page
	 *            查询第几页
	 * @param rows
	 *            每页显示几条记录
	 * @return
	 */
	public List<T> find(String sql, Object[] param, Integer page, Integer rows);
}
